home *** CD-ROM | disk | FTP | other *** search
Text File | 1992-04-27 | 2.5 KB | 115 lines | [TEXT/MPS ] |
- #ifndef __STDFILE__
- #include "StdFile.h"
- #endif
-
- #ifndef __FCNTL__
- #include <fcntl.h>
- #endif
-
- #ifndef __FILES__
- #include <files.h>
- #endif
-
- #ifndef __IOCTL__
- #include <ioctl.h>
- #endif
-
- #ifndef __STDARG__
- #include <stdarg.h>
- #endif
-
-
- // Format strings used for displays and input
- //ƒ-
- const char StdFile::sOIFmt[] = "%d"; // Integer format
- const char StdFile::sOEFmt[] = "%g"; // Floating point format
-
- const char StdFile::sIUCFmt[] = "%1s"; // read next non-blank char
- const char StdFile::sIUSFmt[] = "%hi";
- const char StdFile::sIUIFmt[] = "%i";
- const char StdFile::sIULFmt[] = "%li";
- const char StdFile::sICFmt[] = "%1s";
- const char StdFile::sISFmt[] = "%hi";
- const char StdFile::sIIFmt[] = "%i";
- const char StdFile::sILFmt[] = "%li";
- const char StdFile::sIFFmt[] = "%g";
- const char StdFile::sIDFmt[] = "%lg";
- const char StdFile::sIEFmt[] = "%Lg";
- //ƒ+
-
-
- // Standard file definitions
- StdFile gStdin(stdin);
- StdFile gStdout(stdout);
- StdFile gStderr(stderr);
-
-
- //µ StdFile::~StdFile
- #pragma segment StdFile
- StdFile::~StdFile()
- {
- if (!fIsCopy && fFile)
- fclose(fFile);
- }
-
-
- //µ StdFile::Close
- #pragma segment StdFile
- void StdFile::Close()
- {
- if (fFile)
- fclose(fFile);
- fFile = 0;
- }
-
-
-
- //µ StdFile::Printf
- #pragma segment StdFile
- int StdFile::Printf(const char *fmt, ...) const
- {
- int retval;
- va_list ap;
-
- va_start(ap, fmt);
- retval = vfprintf(fFile, fmt, ap);
- va_end(ap);
- return (retval);
- }
-
-
-
- #pragma segment StdFile
- //ƒ-
- int StdFile::Get(unsigned char& v) const {return (fscanf(fFile, sIUCFmt, &v));}
- int StdFile::Get(unsigned short& v) const {return (fscanf(fFile, sIUSFmt, &v));}
- int StdFile::Get(unsigned int& v) const {return (fscanf(fFile, sIUIFmt, &v));}
- int StdFile::Get(unsigned long& v) const {return (fscanf(fFile, sIULFmt, &v));}
- int StdFile::Get(char& v) const {return (fscanf(fFile, sICFmt, &v));}
- int StdFile::Get(short& v) const {return (fscanf(fFile, sISFmt, &v));}
- int StdFile::Get(int& v) const {return (fscanf(fFile, sIIFmt, &v));}
- int StdFile::Get(long& v) const {return (fscanf(fFile, sILFmt, &v));}
- int StdFile::Get(float& v) const {return (fscanf(fFile, sIFFmt, &v));}
- int StdFile::Get(double& v) const {return (fscanf(fFile, sIDFmt, &v));}
- int StdFile::Get(extended& v) const {return (fscanf(fFile, sIEFmt, &v));}
- //ƒ+
-
-
- //µ StdFile::GetSize
- #pragma segment StdFile
- size_t StdFile::GetSize() const
- {
- short refNum;
- long size;
-
- if (fFile == 0 || ioctl(fFile->_file, FIOREFNUM, (long *) & refNum) == -1)
- return (0);
-
- if (GetEOF(refNum, &size) != noErr)
- return (0);
-
- return (size);
- }
-
-
-